in progress/findwalks.R

findwalks=function(squaresize=16){
   walklist=games::walklist[[as.character(squaresize)]]
   walk=rep(0L,squaresize);walk[1]=6 # sample(c(1,2,6),1) # start is the first cell in the matrix
   for(i in 2:squaresize){
      walk[i]=ifelse( sum(walklist[[walk[(i-1)]]] %in% walk[1:(i-1)])==length(walklist[[walk[(i-1)]]]),0,
                        ifelse( sum(!(walklist[[walk[(i-1)]]] %in% walk[1:(i-1)]))==1,
                                walklist[[walk[(i-1)]]][ !(walklist[[walk[(i-1)]]] %in% walk[1:(i-1)])],
                                sample(walklist[[walk[(i-1)]]][!(walklist[[walk[(i-1)]]] %in% walk[1:(i-1)])],1)  ))
      if(walk[i]==0) return()} # returns NULL
   return(walk)}

Sys.time()
repeat{
tmp=t(replicate(1E6,findwalks()))
tmp=do.call(rbind,tmp[sapply(tmp,is.numeric)])
res=rbind(res,tmp)
res=res[!duplicated(res),]
if(nrow(res)>12487){break}
}
Sys.time()

res=basicwalks
vdweijer/games documentation built on Dec. 23, 2021, 3:02 p.m.